SND12 - siOSTypeInput ÉZÉåÉNÉ^

(98 îN 4 åé 12 ì˙)

Q: êVǵǢ siOSTypeInputSource Ç®ÇÊÇ— siOSTypeInputAvailable ÉZÉåÉNÉ^ÇÕÅAÇ«ÇÃÇÊǧDžégÇ¡ÇΩÇÁÇÊÇ¢ÇÃÇ≈ǵÇÂǧǩÅB

A: siOSTypeInputSource ÉZÉåÉNÉ^ÇÃìÆçÏÇÕ siInputSource ÉZÉåÉNÉ^ÇΔÇøÇÂǧǫìØÇ∂Ç≈Ç∑ÅBSPBGetDeviceInfo ÇΔ SPBSetDeviceInfo Ç≈égǢNjÇ∑ÅBDZÇÍÇégópÇ∑ÇÈÇ…ÇÕÅAëIëÇ∑ÇÈì¸óÕÉ\Å[ÉXÇï\Ç∑ OSType Ç÷ÇÃÉ|ÉCÉìÉ^ÇìnǵǃÇ≠ÇæÇ≥Ç¢ÅBó·Ç¶ÇŒÅAéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

        inputSource = kCDSource;
        err = SPBSetDeviceInfo (soundRefNum, siOSTypeInputSource, &inputSource);

Ç‹ÇΩÇÕÅASPBGetDeviceInfo Ç÷ÇÃåƒÇ—èoǵÇÃåãâ ÇéÛÇØéÊÇÈ OSType Ç÷ÇÃÉ|ÉCÉìÉ^ÇìnǵǃÇ≠ÇæÇ≥Ç¢ÅBó·Ç¶ÇŒÅAéüÇÃÇÊǧDžǻÇËÇ‹Ç∑ÅB

        OSType          inputSource;
        err = SPBGetDeviceInfo (soundRefNum, siOSTypeInputSource, &inputSource);

siOSTypeInputAvailable ÉZÉåÉNÉ^ÇÕÅASPBGetDeviceInfo Ç≈égópÇ≥ÇÍÅAåãâ ÇΔǵǃ SoundInfoList ç\ë¢ëÃÇï‘ǵNjÇ∑ÅBDZÇÍÇ…ÇÕ short ÇΔǪÇÃéüÇ… Handle Ç™ë±Ç´Ç‹Ç∑ÅBSoundInfoList Çí≤Ç◊ǃÅAï‘Ç≥ÇÍÇΩÉnÉìÉhÉãÇ…äiî[Ç≥ÇÍÇΩ OSTypes ÇÃå¬êîÇéÊìæÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB

ï‘Ç≥ÇÍÇΩÉnÉìÉhÉãÇ©ÇÁ OSType ÇÇ–ÇΔǬÇ∏ǬéÊÇËèoÇ∑ÅAä»íPÇ»ó·Çà»â∫Ç…é¶ÇµÇ‹Ç∑ÅB

OSErr GetSoundInputSourceOSTypes (long siRefNum) {
        OSErr                           err;
        SoundInfoList                   sourceTypes;
        long                            offset                  = 0;
        short                           numTypes;
        int                             i;
        char                            sourceType[5];
        Handle                          OSTypes                 = nil;

        err = SPBGetDeviceInfo (siRefNum, siOSTypeInputAvailable, &sourceTypes);
        if (err != noErr) {
                printf ("\nGot error #%d from siOSTypeInputAvailable\n\n", err);
        }

        if (err == noErr) {
                printf ("\nThe sound input source OSTypes are:\n");

                numTypes = sourceTypes.count;
                OSTypes = sourceTypes.infoHandle;

                for (i = 0; i < numTypes; i++) {
                        BlockMoveData (&(*OSTypes)[offset], sourceType, 4);
                        sourceType[4] = 0;
                        printf ("  %s\n", sourceType);
                        offset += sizeof (OSType);
                }
        }

        if (OSTypes != nil) {
                DisposeHandle (OSTypes);
        }

        return err;
}

ì¸óÕÉ\Å[ÉXÇÃíËêîÇÕ Universal Headers 3.1 à»ç~Ç≈íËã`Ç≥ÇÍǃǢNjÇ∑ÅBåªç›íËã`Ç≥ÇÍǃǢÇÈíËêîÇÕéüÇÃí ÇËÇ≈Ç∑ÅB

/* ì¸óÕÉ\Å[ÉXÉ^ÉCÉv */

enum {
    kNoSource            = FOUR_CHAR_CODE('none'),   /* É\Å[ÉXÇëIëǵǻǢ */
    kCDSource            = FOUR_CHAR_CODE('cd  '),   /* ì‡ë† CD ÉvÉåÉCÉÑÅ[ÇÃì¸óÕ */

    kExtMicSource        = FOUR_CHAR_CODE('emic'),   /* äOïîÉ}ÉCÉNÇÃì¸óÕ */
    kRCAInSource         = FOUR_CHAR_CODE('irca'),   /* RCA ÉWÉÉÉbÉNÇÃì¸óÕ */
    kTVFMTunerSource     = FOUR_CHAR_CODE('tvfm'),
    kDAVInSource         = FOUR_CHAR_CODE('idav'),   /* DAV ÉAÉiÉçÉOÇÃì¸óÕ */
    kIntMicSource        = FOUR_CHAR_CODE('imic'),   /* ì‡ë†É}ÉCÉNÇÃì¸óÕ */
    kMediaBaySource      = FOUR_CHAR_CODE('mbay'),   /* ÉÅÉfÉBÉAÅEÉxÉCÇÃì¸óÕ */
    kModemSource         = FOUR_CHAR_CODE('modm'),   /* ÉÇÉfÉÄÇÃì¸óÕ */
    kZoomVideoSource     = FOUR_CHAR_CODE('zvpc')    /* ÉYÅ[ÉÄÅEÉrÉfÉIÇÃì¸óÕ */
};

    siOSTypeInputSource    = FOUR_CHAR_CODE('inpt'), /* OSType Ç…ÇÊÇÈì¸óÕÉ\Å[ÉX */
    siOSTypeInputAvailable = FOUR_CHAR_CODE('inav'), /* égópâ¬î\Ç»ì¸óÕÉ\Å[ÉX OSTypes ÇÃÉäÉXÉg */

-- Mark Cookson
devsupport@apple.com


[ Technical Q&A's : Graphics & Media : QuickTime : Sound : SND11 ]